titlecase 1.1.0

A tool and library that capitalizes text according to a style defined by John Gruber for post titles on his website Daring Fireball.
Documentation

Title Case (titlecase)

titlecase is a small tool that capitalizes English text according to a style defined by John Gruber for post titles on his website Daring Fireball. titlecase runs on Linux, macOS, FreeBSD, NetBSD, and Windows. A dependency free, single-file binary is built for each supported platform for every release.

Travis CI Appveyor crates.io Documentation

titlecase is licensed under the MIT license.

Examples

% echo 'Being productive on linux' | titlecase
Being Productive on Linux

% echo 'Finding an alternative to Mac OS X — part 2' | titlecase
Finding an Alternative to Mac OS X — Part 2

% echo 'an example with small words and sub-phrases: "the example"' | titlecase
An Example With Small Words and Sub-Phrases: "The Example"

Command Line Usage

titlecase reads lines of text from stdin and prints title cased versions to stdout.

Usage as a Rust Crate

See the crate documentation.

Download

Pre-built titlecase binaries are available for Linux, macOS, FreeBSD, NetBSD, and Windows.

Building

Minimum Supported Rust Version: 1.30.1

If you have a stable Rust compiler toolchain installed you can install the most recently released titlecase with cargo:

% cargo install titlecase

Style

Instead of simply capitalizing each word titlecase does the following (amongst other things):

  • Lower case small words like an, of, or in.
  • Don't capitalize words like iPhone.
  • Don't interfere with file paths, URLs, domains, and email addresses.
  • Always capitalize the first and last words, even if they are small words or surrounded by quotes.
  • Don't interfere with terms like "Q&A", or "AT&T".
  • Capitalize small words after a colon.

Credits

This tool makes use of prior work by John Gruber, Aristotle Pagaltzis, and David Gouch.